package com.fdb.efp.nls.api.rest;//package com.fdb.efp.nls.api.rest;
//
//import java.util.List;
//import java.util.Objects;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONObject;
//import com.fdb.basic.framework.core.constant.ApplicationConstance;
//import com.fdb.basic.framework.core.constant.BaseConstant;
//import com.fdb.basic.framework.core.constant.ResponseData;
//import com.fdb.basic.framework.core.util.TimeUtil;
//import com.fdb.basic.framework.core.vo.EngineHttpRequestVO;
//import com.fdb.basic.framework.web.controller.AbstractController;
//import com.fdb.basic.framework.web.util.HttpClientUtil;
//import com.fdb.basic.sequence.service.facade.SequenceService;
//import com.fdb.efp.console.common.ConsoleConstant;
//import com.fdb.efp.nls.service.facade.PubSysInfoService;
//import com.fdb.efp.flow.service.facade.BizFlowInfoService;
//import com.fdb.efp.flow.service.facade.FlowUrlConfigService;
//import com.fdb.efp.flow.service.vo.BizFlowInfoVO;
//import com.fdb.efp.nls.common.RiskcataConstant;
//import com.fdb.efp.nls.service.facade.RscAdjustAppService;
//import com.fdb.efp.nls.service.vo.RscAdjustAppVO;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Qualifier;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestMethod;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//
//
//@RestController
//@RequestMapping("/api")
//public class RscAdjustAppController extends AbstractController {
//
//	@Autowired
//	@Qualifier("rscAdjustAppService")
//	private RscAdjustAppService rscAdjustAppService;
//
//	@Autowired
//	@Qualifier("dbSeqService")
//	private SequenceService sequenceService;
//
//	@Autowired
//	@Qualifier("bizFlowInfoService")
//	private BizFlowInfoService bizFlowInfoService;
//
//	@Autowired
//	@Qualifier("pubSysInfoService")
//	private PubSysInfoService pubSysInfoService;
//
//	@Autowired
//	@Qualifier("flowUrlConfigService")
//	private FlowUrlConfigService flowUrlConfigService;
//
//	/**
//	 * 列表数据查询
//	 * @param page
//	 * @param size
//	 * @return
//	 */
//	@RequestMapping(value="/rsc/adjust/apps", method=RequestMethod.POST)
//	public @ResponseBody ResponseData<List<RscAdjustAppVO>> queryRscAdjustAppAll(@RequestBody RscAdjustAppVO vo) {
//		List<RscAdjustAppVO> outputVo = rscAdjustAppService.queryAllOwner(vo);
//		return getResponseData(outputVo);
//
//	}
//
//	/**
//	 * 根据主键查询详情
//	 * @return
//	 */
//	@RequestMapping(value="/rsc/adjust/app", method=RequestMethod.GET)
//	public @ResponseBody ResponseData<RscAdjustAppVO> queryByPk() {
//		RscAdjustAppVO inVo = new RscAdjustAppVO();
//		RscAdjustAppVO outputVo = rscAdjustAppService.queryByPk(inVo);
//		return getResponseData(outputVo);
//
//	}
//
//	/**
//	 * TODO: 根据分类调整流水号 删除 风险分类调整申请表数据
//	 * @author xiezw
//	 * @params  * @param null
//	 * @return
//	 * @date 2019/9/5 15:33
//	 * @version 0.1
//	 */
//	@RequestMapping(value="/rsc/adjust/app/rscAdjNo", method=RequestMethod.DELETE)
//	public @ResponseBody ResponseData<Integer> deleteByRscAdjNo(@RequestBody RscAdjustAppVO inRscAdjustAppVo) {
//		int outputVo = rscAdjustAppService.deleteByRscAdjNo(inRscAdjustAppVo);
//		return getResponseData(outputVo);
//
//	}
//
//	/**
//	 * TODO: 根据分类调整流水号 删除 风险分类调整申请表数据
//	 * @author xiezw
//	 * @params  * @param null
//	 * @return
//	 * @date 2019/9/5 15:33
//	 * @version 0.1
//	 */
//	@RequestMapping(value="/rsc/adjust/app/rscRmNo", method=RequestMethod.DELETE)
//	public @ResponseBody ResponseData<Integer> deleteByRscRmNo(@RequestBody RscAdjustAppVO inRscAdjustAppVo) {
//		int outputVo = rscAdjustAppService.deleteByRscRmNo(inRscAdjustAppVo);
//		return getResponseData(outputVo);
//
//	}
//
//	/**
//	 * TODO: 根据分类调整流水号 修改 风险分类调整申请表数据
//	 * @author xiezw
//	 * @params  * @param null
//	 * @return
//	 * @date 2019/9/5 15:33
//	 * @version 0.1
//	 */
//	@RequestMapping(value="/rsc/adjust/app/rscAdjNo", method=RequestMethod.PUT)
//	public @ResponseBody ResponseData<Integer> updateByRscAdjNo(@RequestBody RscAdjustAppVO inRscAdjustAppVo) {
//		int outputVo = rscAdjustAppService.updateByRscAdjNo(inRscAdjustAppVo);
//		return getResponseData(outputVo);
//	}
//
//	/**
//	 * TODO: 根据解除分类调整流水号 修改 风险分类调整申请表数据
//	 * @author xiezw
//	 * @params  * @param null
//	 * @return
//	 * @date 2019/9/6 10:03
//	 * @version 0.1
//	 */
//	@RequestMapping(value="/rsc/adjust/app/rscRmNo", method=RequestMethod.PUT)
//	public @ResponseBody ResponseData<Integer> updateByRscRmNo(@RequestBody RscAdjustAppVO inRscAdjustAppVo) {
//		int outputVo = rscAdjustAppService.updateByRscRmNo(inRscAdjustAppVo);
//		return getResponseData(outputVo);
//	}
//
//	/**
//	 * TODO: 新增风险分类调整申请表数据 --分类
//	 * @author xiezw
//	 * @params  * @param null
//	 * @return
//	 * @date 2019/9/5 15:33
//	 * @version 0.1
//	 */
//	@RequestMapping(value="/rsc/adjust/app/rscAdjNo", method=RequestMethod.POST)
//	public @ResponseBody ResponseData<Integer> insertRscAdjNo(@RequestBody RscAdjustAppVO inRscAdjustAppVo) {
//		int outputVo = 0;
//		List<RscAdjustAppVO> qsoutputVo = rscAdjustAppService.queryByBillNo(inRscAdjustAppVo);
//		if (qsoutputVo.size()>0){
//			for (RscAdjustAppVO item : qsoutputVo) {
//				if (ConsoleConstant.APRV_STATUS_01.equals(item.getApprStatus()) || ConsoleConstant.APRV_STATUS_02.equals(item.getApprStatus())  || ConsoleConstant.APRV_STATUS_05.equals(item.getApprStatus())) {
//					outputVo = -1;
//					return getResponseData(outputVo);
//				}
//			}
//		}
//		inRscAdjustAppVo.setCreateTime(TimeUtil.getCurrentDateTime());
//		inRscAdjustAppVo.setLastUpdateUser(inRscAdjustAppVo.getLoginUserId());
//		inRscAdjustAppVo.setLastUpdateTime(TimeUtil.getCurrentDateTime());
//		// 审批状态 = 待发起
//		inRscAdjustAppVo.setApprStatus(ConsoleConstant.APRV_STATUS_01);
//		// 生成方式 = 人工认定
//		inRscAdjustAppVo.setGeneWay(RiskcataConstant.S_ZB_GENE_WAY_2);
//		//  分类类型 = 调整
//		inRscAdjustAppVo.setTaskType(RiskcataConstant.S_ZB_TASK_TYPE_1);
//		try {
//			// 风险分类流水号
//			String seq = sequenceService.getSequence("RSCADAPP_SEQ_ID","null","null");
//			inRscAdjustAppVo.setRscAdjNo(seq);
//			outputVo = rscAdjustAppService.insertRscAdjustApp(inRscAdjustAppVo);
//		} catch (Exception e) {
//			logger.error("********************************************插入数据出错，异常信息为：", e.getMessage());
//			outputVo = -1;
//		}
//
//
//		return getResponseData(outputVo);
//
//	}
//
//	/**
//	 * TODO: 新增风险分类调整申请表数据 --解除
//	 * @author xiezw
//	 * @params  * @param null
//	 * @return
//	 * @date 2019/9/6 9:42
//	 * @version 0.1
//	 */
//	@RequestMapping(value="/rsc/adjust/app/rscRmNo", method=RequestMethod.POST)
//	public @ResponseBody ResponseData<Integer> insertRscRmNo(@RequestBody RscAdjustAppVO inRscAdjustAppVo) {
//		int outputVo = 0;
//		List<RscAdjustAppVO> qsoutputVo = rscAdjustAppService.queryByBillNo(inRscAdjustAppVo);
//		if (qsoutputVo.size()>0){
//			for (RscAdjustAppVO item : qsoutputVo) {
//				if (ConsoleConstant.APRV_STATUS_01.equals(item.getApprStatus()) || ConsoleConstant.APRV_STATUS_02.equals(item.getApprStatus())  || ConsoleConstant.APRV_STATUS_05.equals(item.getApprStatus())) {
//					outputVo = -1;
//					return getResponseData(outputVo);
//				}
//			}
//		}
//		inRscAdjustAppVo.setCreateTime(TimeUtil.getCurrentDateTime());
//		inRscAdjustAppVo.setLastUpdateUser(inRscAdjustAppVo.getLoginUserId());
//		inRscAdjustAppVo.setLastUpdateTime(TimeUtil.getCurrentDateTime());
//		// 审批状态 = 待发起
//		inRscAdjustAppVo.setApprStatus(ConsoleConstant.APRV_STATUS_01);
//		// 生成方式 = 人工解除
//		inRscAdjustAppVo.setGeneWay(RiskcataConstant.S_ZB_GENE_WAY_3);
//		//  分类类型 = 解除
//		inRscAdjustAppVo.setTaskType(RiskcataConstant.S_ZB_TASK_TYPE_2);
//		//  调整后分类结果 = 机评分类结果
//		inRscAdjustAppVo.setAdjustResult(inRscAdjustAppVo.getAdjustBasic());
//		try {
//			// 风险分类流水号
//			String seq = sequenceService.getSequence("RSCRMAPP_SEQ_ID","null","null");
//			inRscAdjustAppVo.setRscRmNo(seq);
//			outputVo = rscAdjustAppService.insertRscAdjustApp(inRscAdjustAppVo);
//		} catch (Exception e) {
//			logger.error("********************************************插入数据出错，异常信息为：", e.getMessage());
//			outputVo = -1;
//		}
//
//
//		return getResponseData(outputVo);
//
//	}
//
//	/**
//	 * TODO: 查询 审批状态 = 通过 数据
//	 * @author xiezw
//	 * @params  * @param null
//	 * @return
//	 * @date 2019/9/6 15:05
//	 * @version 0.1
//	 */
//	@RequestMapping(value="/rsc/adjust/apps/appr", method=RequestMethod.POST)
//	public @ResponseBody ResponseData<List<RscAdjustAppVO>> queryAllAppr(@RequestBody RscAdjustAppVO vo) {
//		List<RscAdjustAppVO> outputVo = rscAdjustAppService.queryAllAppr(vo);
//		return getResponseData(outputVo);
//
//	}
//
//	/**
//	 * TODO: 导出数据
//	 * @author xiezw
//	 * @params  * @param null
//	 * @return
//	 * @date 2019/9/6 15:06
//	 * @version 0.1
//	 */
//	@RequestMapping(value="/rsc/adjust/apps/export", method=RequestMethod.POST)
//	public @ResponseBody ResponseData<List<RscAdjustAppVO>> queryAll(@RequestBody RscAdjustAppVO vo) {
//		List<RscAdjustAppVO> outputVo = rscAdjustAppService.queryAllOwner(vo);
//		return getResponseData(outputVo);
//
//	}
//
//	/**
//	 * TODO: 风险分类调整解除 提交数据 发起流程
//	 * @author xiezw
//	 * @params  * @param null
//	 * @return
//	 * @date 2019/9/11 10:25
//	 * @version 0.1
//	 */
//	@RequestMapping(value="/rsc/adjust/rm/commit", method=RequestMethod.POST)
//	public @ResponseBody ResponseData<Integer> rmCommit(@RequestBody RscAdjustAppVO vo) {
//		int outputVo = 0;
//		if(null==vo.getRscRmNo() || ""==vo.getRscAdjNo()){
//			// 新增数据
//			insertRscRmNo(vo);
//		}else{
//			// 修改数据
//			updateByRscRmNo(vo);
//		}
//
//		// 发起流程
//		logger.info("即将发起额度限额审批流程，信息为:" + JSON.toJSONString(vo));
//		// 事件ID
//		String eventId = "mRscAdjustRemoveEnter";
//		vo.setApprStatus(ConsoleConstant.APRV_STATUS_02);
//
//		BizFlowInfoVO bizFlowInfoVO = new BizFlowInfoVO();
////		bizFlowInfoVO.setBizFlowType(BaseConstant.BIZ_FLOW_TYPE_04 );
//		bizFlowInfoVO.setBizFlowType("04");
//		List<BizFlowInfoVO> listFlow = bizFlowInfoService.queryBizFlowInfoByFlowType(bizFlowInfoVO);
//
//		// 获取流程ID
//		String flowId = "";
//		logger.info("查询到的业务流程参数为："+ JSONObject.toJSONString(listFlow));
//		if (Objects.nonNull(listFlow) && listFlow.size()>0) {
//			bizFlowInfoVO = listFlow.get(0);
//			flowId = bizFlowInfoVO.getBizFlowId();  // 得到业务流转ID
//		} else {
//			//提交失败 待发起
//			vo.setApprStatus(ConsoleConstant.APRV_STATUS_01);
//			rscAdjustAppService.updateByRscRmNo(vo);
//			outputVo = -1;
//			return setResponseMessage(outputVo, "未配置相关信息提交失败!");
//		}
//		EngineHttpRequestVO eVo = new EngineHttpRequestVO();
//		// 业务法人机构
//		eVo.setBizLagelOrgCode(this.getUserInfo().getOrgInfo().getOrgCode());
//		// 业务流水号
//		eVo.setE_bizSerno(vo.getRscRmNo());
//		eVo.setFlowId(flowId);
//		//事件ID
//		eVo.setEventId(eventId);
//		eVo.setG_bizSerno(vo.getRscRmNo());
//		try {
//			//HttpClientUtil.callFlowEngine(flowUrlConfigService.getRestfulSyncStartEventUrl(), eVo, String.class);
//			HttpClientUtil.callFlowEngine("http://127.0.0.1:8080/flow/api/event/start/restful/sync", eVo, String.class);
//			//更新 申请日期
//			vo.setAppDate(pubSysInfoService.getOpenday(BaseConstant.SYS_ID_1001));
//			outputVo = rscAdjustAppService.updateByRscRmNo(vo);
//		} catch (Exception e) {
//			// 发起失败
//			e.printStackTrace();
//			logger.error("RscAdjustAppVO", e.getMessage());
//			outputVo = -1;
//			return setResponseMessage(outputVo, "发起风险分类调整解除申请审批流程失败!原因: " + e.getMessage());
//		}
//		return getResponseData(outputVo);
//	}
//
//	/**
//	 * TODO: 风险分类调整 提交数据 发起流程
//	 * @author xiezw
//	 * @params  * @param null
//	 * @return
//	 * @date 2019/9/11 14:59
//	 * @version 0.1
//	 */
//	@RequestMapping(value="/rsc/adjust/app/commit", method=RequestMethod.POST)
//	public @ResponseBody ResponseData<Integer> appCommit(@RequestBody RscAdjustAppVO vo) {
//		int outputVo = 0;
//		if(null==vo.getRscAdjNo() || ""==vo.getRscAdjNo()){
//			// 新增数据
//			insertRscAdjNo(vo);
//		}else{
//			// 修改数据
//			updateByRscAdjNo(vo);
//		}
//
//		// 发起流程
//		logger.info("即将发起额度限额审批流程，信息为:" + JSON.toJSONString(vo));
//		// 事件ID
//		String eventId = "mRscAdjustAppEnter";
//		vo.setApprStatus(ConsoleConstant.APRV_STATUS_02);
//
//		BizFlowInfoVO bizFlowInfoVO = new BizFlowInfoVO();
////		bizFlowInfoVO.setBizFlowType(BaseConstant.BIZ_FLOW_TYPE_04 );
//		bizFlowInfoVO.setBizFlowType("04");
//		List<BizFlowInfoVO> listFlow = bizFlowInfoService.queryBizFlowInfoByFlowType(bizFlowInfoVO);
//
//		// 获取流程ID
//		String flowId = "";
//		logger.info("查询到的业务流程参数为："+ JSONObject.toJSONString(listFlow));
//		if (Objects.nonNull(listFlow) && listFlow.size()>0) {
//			bizFlowInfoVO = listFlow.get(0);
//			flowId = bizFlowInfoVO.getBizFlowId();  // 得到业务流转ID
//			vo.setApprStatus(ConsoleConstant.APRV_STATUS_02);
//		} else {
//			//提交失败 待发起
//			vo.setApprStatus(ConsoleConstant.APRV_STATUS_01);
//			rscAdjustAppService.updateByRscAdjNo(vo);
//			outputVo = -1;
//			return setResponseMessage(outputVo, "未配置相关信息提交失败!");
//		}
//		EngineHttpRequestVO eVo = new EngineHttpRequestVO();
//		// 业务法人机构
//		eVo.setBizLagelOrgCode(this.getUserInfo().getOrgInfo().getOrgCode());
//		// 业务流水号
//		eVo.setE_bizSerno(vo.getRscAdjNo());
//		eVo.setFlowId(flowId);
//		//事件ID
//		eVo.setEventId(eventId);
//		eVo.setG_bizSerno(vo.getRscAdjNo());
//		try {
//			HttpClientUtil.callFlowEngine(flowUrlConfigService.getRestfulSyncStartEventUrl(), eVo, String.class);
//			//HttpClientUtil.callFlowEngine("http://127.0.0.1:8980/flow/api/event/start/restful/sync", eVo, String.class);
////更新 申请日期
//			vo.setAppDate(pubSysInfoService.getOpenday(BaseConstant.SYS_ID_1001));
//			outputVo = rscAdjustAppService.updateByRscAdjNo(vo);
//		} catch (Exception e) {
//			// 发起失败
//			e.printStackTrace();
//			logger.error("RscAdjustAppVO", e.getMessage());
//			outputVo = -1;
//			return setResponseMessage(outputVo, "发起风险分类调整申请审批流程失败!原因: " + e.getMessage());
//		}
//		return getResponseData(outputVo);
//	}
//
//	private ResponseData<Integer> setResponseMessage(Integer outputVo, String message) {
//		ResponseData<Integer> responseData = new ResponseData<Integer>();
//		responseData.setMessage(message);
//		responseData.setCode(ApplicationConstance.FAILURE);
//		responseData.setSuccess(true);
//		return responseData;
//	}
//}
